package SwordOffer2;

public class day6_3 {
    /*
     * 判断回文字串：设置返回值count赋值0
     * 1.当字符串长度为1，是回文字符串，返回1
     * 2.当长度大于1：循环字符串，设置左右指针left，right等于i，判断i的值与i+1的值是否相等
     *   若相等count+1，，以i，i+1为中心指针向两边移动循环判断，若左右指针值相等count+1，若left与right值不相等退出循环，
     *   然后以i为中心循环判断是否是回文串，若左右指针值相等count+1，若left与right值不相等退出循环，
     * 3.返回count值
     * */
    public int countSubstrings(String s) {
        int count = 0;
        if (s.length() == 1) {
            return 1;
        }
        for (int i = 0; i < s.length(); i++) {
            int left = i;
            int right = i;
            count++;
            if (i == 0 && s.charAt(i) == s.charAt(i + 1)) {
                count++;
            } else {
                //以偶数字母为中心循环
                if (s.length() > 2 && i < s.length() - 1 && s.charAt(i) == s.charAt(i + 1)) {
                    count++;
                    left = i;
                    right = i + 1;
                    while (left > 0 && right < s.length() - 1) {
                        left--;
                        right++;
                        if (s.charAt(left) == s.charAt(right)) {
                            count++;
                        } else {
                            break;
                        }
                    }
                    //还原left，right
                    left = i;
                    right = i;
                }
                //以奇数为中心循环
                while (left > 0 && right < s.length() - 1) {
                    left--;
                    right++;
                    if (s.charAt(left) == s.charAt(right)) {
                        count++;
                    } else {
                        break;
                    }
                }
            }
        }
        return count;
    }
}
